🦄
Unicorn Wings
🪽
All Posts
Back

AI 서비스 기획자를 위한 멘탈모델

Router로써 AI

Zack
Zack · 2024년 6월 11일
AI 서비스 기획자를 위한 멘탈모델

새로운 기술을 적용할 때는 이 기술을 어떻게 사용할 것인지에 대한 개념, 멘탈모델을 가지고 있는게 중요합니다. AI기술을 적용할 때도 마찬가지 입니다. 최근에 진행한 AI ChatBot 서비스 개발을 진행하면서 가지게 된 멘탈모델을 공유하고자 합니다.



AI Chatbot에서의 AI의 역할


Chatgpt를 사용해보면, 질문에 대한 대답을 해주는 Text to text로 동작합니다.
gpt4에서는 그림을 그려달라고 하면 그림을 그려주고, 표를 만들어달라고 하면 표를 만들어줍니다
AI chatbot이 하는 일은 크게 2가지로 나눠서 볼 수 있습니다. 첫번째는 질문의 의도를 파악하는 것이고, 두번째는 질문에 대한 답변 혹은 요청받은 작업을 수행하는 것입니다.

AI기술이 나오기 전에도 chatbot은 존재했습니다. AI이전의 chatbot은 ARS 방식과 비슷했고, 사용자는 버튼을 눌러 원하는 메뉴로 접근했고, 눌러진 버튼에 따라 미리 정의된 작업을 수행했습니다. AI기술로 달라진것은 무엇일까요?

사용자는 원하는 메뉴에 도달하기 까지 계속 버튼을 누를 필요가 없어졌습니다. AI기술로 인해 사용자의 질문에서 의도를 파악하고, 그에 맞는 작업을 수행하도록 AI가 결정합니다.

AI가 결정한다는 말이 중요합니다. 예를 들어 더이상 A버튼을 누른뒤에 a,b,c버튼을 보여주는 시나리오를 기획할 필요가 없습니다. 사용자도 특정 버튼 시퀀스를 누르지 않아도 됩니다. 어떤 버튼을 눌러서 어떤 작업으로 연결해야 하는지는 AI가 사용자 대신 눌러주는 격입니다. 예전에 전화교환원이 전화를 연결해주듯, AI가 특정 기능으로 연결해주게 됩니다. AI Chatbot에서 AI의 첫 번째 역할은 사용자의 의도에 맞게 기능을 연결해주는 라우터인 것입니다.

Summary
AI Chatbot에서 AI의 역할

1 사용자의 질문에서 의도를 파악
2 의도에 맞는 기능으로 연결

= Router로써의 AI



Router로써의 AI


Router로써의 AI를 하나의 개념으로 가지고 있다면, AI Chatbot 기획이 간단해집니다. 사용자에게 제공할 수 있는 기능을 나열하고, ai가 해당 기능을 호출할 수 있도록 연결해주면 됩니다.

예를 들어서, 아래와 같이 가격정보를 제공하는 기능이 있다고 가정해봅시다.


이 예제에서는 사용자가 가격정보를 요청하면, AI는 가격정보를 가져올 수 있는 기능으로 연결하고, 해당 기능에서 그래프와 가격정보를 가진 UI를 만들어서 사용자에게 보여줍니다.

이 기능을 AI Chatbot으로 구현하고 싶을 때 우리가 해야되는 것은

1 가격정보를 가져와서 보여주는 기능을 만들고
2 AI에게 사용자가 가격정보를 물어보면 이 기능을 사용해라고 알려주는 것입니다.

AI에게 해당 기능을 알려주는 것은 많이 들어보셨던 프롬프트로 가능합니다. 아래는 가격정보를 가져오는 기능을 AI에게 알려주는 프롬프트입니다.

"If the user just wants the price, call \`show_stock_price\` to show the price.";

이제 사용자가 가격정보를 원한다고 AI가 판단하면, show_stock_price라는 함수를 호출 할 것 입니다.

AI는 앞선 예제처럼 "애플" 이라는 특정 회사의 정보를 이 함수에 같이 넘겨줄수 있습니다. show_stock_price가 어떤식으로 회사이름을 받는지를 정의해준다면, AI는 해당 포멧에 맞춰서 회사이름을 넘겨줄 수 있습니다.

showStockPrice: {
  description:
    "Get the current stock price of a given stock or currency. Use this to show the price to the user.",
  parameters: z.object({
    symbol: z
      .string()
      .describe(
        "The name or symbol of the stock or currency. e.g. DOGE/AAPL/USD."
      ),
  }),

복잡해보이지만 symbol이라는 이름으로 회사이름을 받는다는 것만 알면 됩니다. 이 정보를 AI가 알고 있다면, 위의 예시처럼 사용자가 애플 회사의 가격정보를 요청하면, AI는 show_stock_price 함수를 호출하면서 symbol에 "AAPL"을 넘겨줄 것 입니다.


이렇게 기능을 Router역할을 하는 AI에게 연결하기만 하면 되기 때문에, AI Chatbot은 확장이 쉬워집니다. 쇼핑몰이라면 상품검색, 반품요청처리, 주문조회, 배송조회, 재고확인 등등 다양한 기능을 추가할 수 있습니다.

Summary

AI에게 프롬프트로 기능을 알려주고, 해당 기능을 호출할때 필요한 정보를 정의해주면 AI가 사용자의 의도에 맞게 기능을 연결해줍니다.




질문에 대한 답변을 하는 AI

Router로써 AI역할 외에도 AI는 질문에 대한 답변을 바로 할수도 있습니다. 하지만 gpt와 같이 이미 학습된 AI모델을 사용하면, 원하지 않는 정보를 제공할 수도 있습니다. 질문에 대한 답변은 맞지만, 서비스에 적합한 답변은 아닌 경우가 있습니다.

저는 이것을 세종대왕 문제라고 부릅니다.

Chatgpt에게 세종대왕이 누구냐고 물어보면 "조선의 제4대 임금"이라고 답합니다. 하지만 AI Chatbot서비스는 서비스에 알맞는 질문만 대답해야지 세상의 모든 질문에 대답을 해서는 안됩니다. 그래서 저는 항상 프롬프트를 테스트할 때 "세종대왕이 누구야?"라고 물어봅니다. 프롬프트 작업이 제대로 되었다면, "관련 없는 질문은 답할 수 없습니다"와 같은 대답을 해야 되기 때문입니다.

그러면 관련이 있는 질문과 그렇지 않는 질문은 어떻게 구별할까요? 이것은 AI에게 우리가 가진 정보를 제공하고, 해당 정보내에서만 대답을 하도록 강제하는 프롬프트를 넣어서 진행합니다. 하지만 AI에게 한 번에 제공할 수 있는 정보량이 한정적이기 때문에, 다량의 정보를 기반으로 답변을 할 수 있도록 하기 위해서 RAG (Retrieval-Augmented Generation) 기술이 사용됩니다.

RAG에 대해서는 다음에 더 자세히 설명하겠습니다.

이런 질문에 대답하는 AI의 역할은 Router에 제일 마지막에 연결해 둡니다. 마치 ARS에서 *를 누르면 상담원과 연결되듯이 사용자의 의도에 맞는 기능을 찾지 못했을 때, 기본적으로 질문에 대답하는 기능으로 연결하도록 해두는 것입니다.

Summary

서비스와 관련된 질문에 대해서만 답변을 하기 위해 프롬프트에서 강제합니다.

대량의 정보를 기반으로 답변을 하기 위해 RAG기술을 사용합니다.






유니콘윙즈에서는 다양한 AI Chatbot을 통해서 AI tranformation에 도움을 드리고 있습니다.
관심이 있으신 분들께서는 이메일 또는 카카오톡 오픈채팅 으로 연락주세요.